/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



import java.io.FileReader;

/**
 *
 * @author Eric Beaudry
 */
public class TestPolitique2 {
    private static PolitiqueSimple politique;

    protected static int           maxtour = 5000;
    
    
    public static int simulateGame(Plateau plateau, PolitiqueAvancee[] pols, int j, int nbCasesAbandon){
        int[] pos = new int[pols.length];
        int nb = 0;
        j %= pols.length;
        for(int tour=0;tour<maxtour;tour++){
            // Trouver le joueur le plus avancé
            int maxposAdversaire=0;
            for(int k=0;k<pos.length;k++)
                if(k!=j)
                    if(pos[k]>maxposAdversaire)
                        maxposAdversaire = pos[k];

            // Test de condition d'abandon
            if(nbCasesAbandon>0 && Math.abs(pos[j] - maxposAdversaire) > nbCasesAbandon)
                return -1;

            // Déterminer l'action à jouer
            ActionType action = pols[j].getAction(pos[j], maxposAdversaire);
            int avancement = action.getAvancement();

            // Trouver la prochaine case
            pos[j] = plateau.getNextCase(pos[j], avancement);

            if(pos[j]==plateau.nbCases-1)
                return j;
            
            // Passer au prochain joueur
            j=(j+1)%pols.length;
        }
        return -1;
    }

    public static void main(String args[]) throws Exception
    {
        if(args.length<4)
            System.err.println("java -cp SerpentsEchelles.jar TestPolitique2 plateau.txt politique1.txt politique2.txt nbIteration maxCoups");
        
        Plateau plateau = null;
        PolitiqueAvancee pols[] = new PolitiqueAvancee[2];
        int nb = 1000000;
        
        if(args.length>0)
            plateau = Plateau.load(new FileReader(args[0]));
        else
            plateau = Plateau.generate(500, 10, 250, 8, 30);
        
        if(args.length>1)
            pols[0] = PolitiqueAvancee.load(new FileReader(args[1]));
        else
            pols[0] = GenPolitique2.generate(plateau);
        
        if(args.length>2)
            pols[1] = PolitiqueAvancee.load(new FileReader(args[2]));
        else
            pols[1] = GenPolitique2.generate(plateau);

        if(args.length>3)
            nb = Integer.parseInt(args[3]);

        if(args.length>4)
            maxtour = Integer.parseInt(args[4]);
        
        int[] compteWin = new int[2];
        
        for(int iter=0;iter<nb;iter++){
            int w = simulateGame(plateau, pols, iter%pols.length, -1);
            if(w!=-1)
                compteWin[w]++;
        }

        System.out.println("Résultats:");
        for(int i=0;i<compteWin.length;i++)
            System.out.println("Joueur #" + i + " : " + compteWin[i]);
    }
    
    
}
